<?php

// 初始化中间件配置
$middlewareConfig = [];

// 扫描service/app下所有目录，查找包含middleware文件夹的应用
$appPath = dirname(__DIR__) . '/app';
$appDirs = glob($appPath . '/*', GLOB_ONLYDIR);

// 遍历所有应用目录
foreach ($appDirs as $appDir) {
  $appName        = basename($appDir);
  $middlewarePath = $appDir . '/middleware';

  // 如果应用目录下存在middleware文件夹
  if (is_dir($middlewarePath)) {
    // 获取该目录下所有中间件文件
    $middlewareFiles = glob($middlewarePath . '/*Middleware.php');

    // 如果存在中间件文件
    if (!empty($middlewareFiles)) {
      // 为该应用创建中间件配置数组（common除外，它的中间件将作为默认中间件）
      $configKey = ($appName === 'common') ? '' : $appName;

      if (!isset($middlewareConfig[$configKey])) {
        $middlewareConfig[$configKey] = [];
      }

      // 将中间件添加到配置中
      foreach ($middlewareFiles as $middlewareFile) {
        $middlewareName  = basename($middlewareFile, '.php');
        $middlewareClass = "app\\{$appName}\\middleware\\{$middlewareName}";

        // 检查中间件类是否存在
        if (class_exists($middlewareClass)) {
          $middlewareConfig[$configKey][] = $middlewareClass;
        }
      }
    }
  }
}

return $middlewareConfig;